From 7c81c648d7af43f684a8275bd637c472d1e9369d Mon Sep 17 00:00:00 2001 From: robertlipe Date: Tue, 23 Jul 2013 01:50:49 +0000 Subject: [PATCH] Wrap more tests of implicit time_t == 0 inside isValid. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4469 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/kml.cc | 32 +++++++-------- gpsbabel/reference/earth-expertgps-track.kml | 1 - gpsbabel/reference/earth-expertgps.kml | 1 - .../track/gpx_garmin_extensions-kml_track.kml | 1 - .../track/segmented_tracks-track.kml | 6 --- gpsbabel/reference/track/segmented_tracks.kml | 6 --- .../reference/track/tcxtest~gpx-course.tcx | 5 --- .../reference/track/tcxtest~gpx-history.tcx | 5 --- gpsbabel/reference/track/tracks.gpssim | 1 - gpsbabel/src/core/datetime.h | 40 +++++++++++-------- gpsbabel/waypt.cc | 7 +--- 11 files changed, 38 insertions(+), 67 deletions(-) diff --git a/gpsbabel/kml.cc b/gpsbabel/kml.cc index fa231033c..c52377338 100644 --- a/gpsbabel/kml.cc +++ b/gpsbabel/kml.cc @@ -890,19 +890,16 @@ static void kml_output_description(const waypoint* pt) static void kml_recompute_time_bounds(const waypoint* waypointp) { - gpsbabel::DateTime t = waypointp->GetCreationTime(); - if (t == 0) - return; - - if (!t.isValid()) - return; - - if (!kml_time_min.isValid() || (t > 0 && t < kml_time_min)) { - kml_time_min = t; - } - - if (!kml_time_max.isValid() || t > kml_time_max) { - kml_time_max = t; + if (waypointp->GetCreationTime().isValid()) + { + if(!(kml_time_min.isValid()) || + (waypointp->GetCreationTime() < kml_time_min)) { + kml_time_min = waypointp->GetCreationTime(); + } + if (!(kml_time_max.isValid()) || + (waypointp->GetCreationTime() > kml_time_max )) { + kml_time_max = waypointp->GetCreationTime(); + } } } @@ -1370,7 +1367,7 @@ char* kml_geocache_get_logs(const waypoint* wpt) " %04d-%02d-%02d", t.date().year(), t.date().month(), - t.date().day()), + t.date().day()); r = xstrappend(r, temp); xfree(temp); } @@ -1683,8 +1680,7 @@ static int track_has_time(const route_head* header) QUEUE_FOR_EACH(&header->waypoint_list, elem, tmp) { waypoint* tpt = (waypoint*)elem; - // FIXME: implicit time_t test here. - if (tpt->GetCreationTime().isValid() && tpt->GetCreationTime() > 0) { + if (tpt->GetCreationTime().isValid()) { points_with_time++; if (points_with_time >= 2) { return 1; @@ -1731,8 +1727,8 @@ static void kml_mt_hdr(const route_head* header) QUEUE_FOR_EACH(&header->waypoint_list, elem, tmp) { waypoint* tpt = (waypoint*)elem; - // FIXME: implicit time_t test here. - if (tpt->GetCreationTime().isValid() && tpt->GetCreationTime() > 0) { + + if (tpt->GetCreationTime().isValid()) { QString time_string = tpt->CreationTimeXML(); writer->writeOptionalTextElement("when", time_string); } else { diff --git a/gpsbabel/reference/earth-expertgps-track.kml b/gpsbabel/reference/earth-expertgps-track.kml index 325123f73..e11ea7c9a 100644 --- a/gpsbabel/reference/earth-expertgps-track.kml +++ b/gpsbabel/reference/earth-expertgps-track.kml @@ -1025,7 +1025,6 @@ Longitude: -91.610350 Latitude: 30.062183 Altitude: 3.281 ft - Speed: 0.0 mph Heading: 300.1 Time: 2002-05-25T17:06:21Z diff --git a/gpsbabel/reference/earth-expertgps.kml b/gpsbabel/reference/earth-expertgps.kml index 9922759cf..50a3b1c79 100644 --- a/gpsbabel/reference/earth-expertgps.kml +++ b/gpsbabel/reference/earth-expertgps.kml @@ -857,7 +857,6 @@ Longitude: -91.610350 Latitude: 30.062183 Altitude: 3.281 ft - Speed: 0.0 mph Heading: 300.1 Time: 2002-05-25T17:06:21Z diff --git a/gpsbabel/reference/track/gpx_garmin_extensions-kml_track.kml b/gpsbabel/reference/track/gpx_garmin_extensions-kml_track.kml index 27b94ab1f..ee623f561 100644 --- a/gpsbabel/reference/track/gpx_garmin_extensions-kml_track.kml +++ b/gpsbabel/reference/track/gpx_garmin_extensions-kml_track.kml @@ -212,7 +212,6 @@ Altitude: 0.449 ft Heart rate: 111 Cadence: 151 - Speed: 0.0 mph Heading: 360.0 Time: 2008-08-20T07:04:48Z diff --git a/gpsbabel/reference/track/segmented_tracks-track.kml b/gpsbabel/reference/track/segmented_tracks-track.kml index b142134fa..8050d7f8e 100644 --- a/gpsbabel/reference/track/segmented_tracks-track.kml +++ b/gpsbabel/reference/track/segmented_tracks-track.kml @@ -1228,8 +1228,6 @@ Distance 1.1 mi Min Alt 0.000 ft Max Alt 0.000 ft -Max Speed 0.0 mph -Avg Speed 6.1 mph Start Time2007-07-27T05:24:05Z End Time2007-07-27T05:35:00Z ]]> @@ -1247,7 +1245,6 @@ -
Longitude: -86.844140
Latitude: 35.836146
Speed: 0.0 mph
Heading: 305.9
Time: 2007-07-27T05:24:05Z
@@ -1350,7 +1347,6 @@ -
Longitude: -86.843137
Latitude: 35.835023
Speed: 0.0 mph
Heading: 160.7
Time: 2007-07-27T05:30:00Z
@@ -1413,7 +1409,6 @@ -
Longitude: -86.842084
Latitude: 35.835410
Speed: 0.0 mph
Heading: 64.5
Time: 2007-07-27T05:31:00Z
@@ -1696,7 +1691,6 @@ -
Longitude: -86.838782
Latitude: 35.836744
Speed: 0.0 mph
Heading: 146.9
Time: 2007-07-27T05:35:00Z
diff --git a/gpsbabel/reference/track/segmented_tracks.kml b/gpsbabel/reference/track/segmented_tracks.kml index f566defb3..e0cc455c3 100644 --- a/gpsbabel/reference/track/segmented_tracks.kml +++ b/gpsbabel/reference/track/segmented_tracks.kml @@ -613,8 +613,6 @@ Distance 1.1 mi Min Alt 0.000 ft Max Alt 0.000 ft -Max Speed 0.0 mph -Avg Speed 6.1 mph Start Time2007-07-27T05:24:05Z End Time2007-07-27T05:35:00Z ]]> @@ -632,7 +630,6 @@ -
Longitude: -86.844140
Latitude: 35.836146
Speed: 0.0 mph
Heading: 305.9
Time: 2007-07-27T05:24:05Z
@@ -735,7 +732,6 @@ -
Longitude: -86.843137
Latitude: 35.835023
Speed: 0.0 mph
Heading: 160.7
Time: 2007-07-27T05:30:00Z
@@ -798,7 +794,6 @@ -
Longitude: -86.842084
Latitude: 35.835410
Speed: 0.0 mph
Heading: 64.5
Time: 2007-07-27T05:31:00Z
@@ -1081,7 +1076,6 @@ -
Longitude: -86.838782
Latitude: 35.836744
Speed: 0.0 mph
Heading: 146.9
Time: 2007-07-27T05:35:00Z
diff --git a/gpsbabel/reference/track/tcxtest~gpx-course.tcx b/gpsbabel/reference/track/tcxtest~gpx-course.tcx index 628fb41fc..1fe692250 100644 --- a/gpsbabel/reference/track/tcxtest~gpx-course.tcx +++ b/gpsbabel/reference/track/tcxtest~gpx-course.tcx @@ -24,11 +24,6 @@ -118.7587920 308.7 - - - 0.010 - - diff --git a/gpsbabel/reference/track/tcxtest~gpx-history.tcx b/gpsbabel/reference/track/tcxtest~gpx-history.tcx index 15e332194..d1e44c9d1 100644 --- a/gpsbabel/reference/track/tcxtest~gpx-history.tcx +++ b/gpsbabel/reference/track/tcxtest~gpx-history.tcx @@ -17,11 +17,6 @@ -118.7587920 308.7 - - - 0.010 - - diff --git a/gpsbabel/reference/track/tracks.gpssim b/gpsbabel/reference/track/tracks.gpssim index 939ffb6e5..fd5c08a4f 100644 --- a/gpsbabel/reference/track/tracks.gpssim +++ b/gpsbabel/reference/track/tracks.gpssim @@ -1,4 +1,3 @@ -$FRSPD,0.02*63 $FRWPT,3003.73100,N,09136.62100,W,1.0,250502,170621*63 $FRSPD,0.64*63 $FRWPT,3003.76700,N,09136.63400,W,0.0,250502,170955*69 diff --git a/gpsbabel/src/core/datetime.h b/gpsbabel/src/core/datetime.h index 929edae9e..b6ca697b6 100644 --- a/gpsbabel/src/core/datetime.h +++ b/gpsbabel/src/core/datetime.h @@ -39,7 +39,7 @@ public: // As a crutch, mimic the old behaviour of an uninitialized creation time // being 1/1/1970. DateTime() { - this->setTime_t(0); + setTime_t(0); t_ = -1; } @@ -47,56 +47,62 @@ public: DateTime(QDateTime dt) : QDateTime(dt) {} // Handle time_tm tm = wpt->creation_time; - operator const time_t() const { return this->toTime_t(); } + operator const time_t() const { return toTime_t(); } const time_t& operator=(const time_t& t) { - this->setTime_t(t); + setTime_t(t); return t; } time_t operator--(int) { setTime_t(toTime_t() - 1); - return this->toTime_t(); + return toTime_t(); } time_t operator++(int) { setTime_t(toTime_t() + 1); - return this->toTime_t(); + return toTime_t(); } time_t operator+=(const time_t& t) { setTime_t(toTime_t() + t); - return this->toTime_t(); + return toTime_t(); } // Handle tm = *gmtime(&wpt->creation_time) ...poorly. inline const time_t *operator&() { - t_ = this->toTime_t(); + t_ = toTime_t(); return &t_; } // Integer form: YYMMDD int ymd() const { - QDate date(this->date()); - return date.year() * 10000 + date.month() * 100 + date.day(); + QDate d(date()); + return d.year() * 10000 + d.month() * 100 + d.day(); } int ddmmyy() const { - QDate date(this->date()); - return date.day() * 10000 + date.month() * 100 + date.year(); + QDate d(date()); + return d.day() * 10000 + d.month() * 100 + d.year(); } int hms() const { - QTime time(this->time()); - return time.hour() * 10000 + time.minute() * 100 + time.second(); + QTime t(time()); + return t.hour() * 10000 + t.minute() * 100 + t.second(); } + // Temporary: Override the standard, also handle time_t 0 as invalid. + bool isValid() const { + return date().isValid() && time().isValid() && toTime_t() > 0; + } + + // Qt 4.6 and under doesn't have msecsTo. Fortunately, it's easy to // provide. It's a 64-bit because if the times aren't on the same day, // the returned value can be quite large. int64_t msecsTo(const QDateTime &dt) { - qint64 days = this->daysTo(dt); - qint64 msecs = this->time().msecsTo(dt.time()); + qint64 days = daysTo(dt); + qint64 msecs = time().msecsTo(dt.time()); return days * (1000 * 3600 * 24) + msecs; } @@ -104,12 +110,12 @@ public: // the trailing digits aren't .000. Always UTC. QString toPrettyString() const { const char* format; - if (this->time().msec()) { + if (time().msec()) { format = "yyyy-MM-ddTHH:mm:ss.zzzZ"; } else { format = "yyyy-MM-ddTHH:mm:ssZ"; } - return this->toUTC().toString(format); + return toUTC().toString(format); } private: diff --git a/gpsbabel/waypt.cc b/gpsbabel/waypt.cc index 6d06a3e40..0716c44fc 100644 --- a/gpsbabel/waypt.cc +++ b/gpsbabel/waypt.cc @@ -158,12 +158,7 @@ waypt_add(waypoint *wpt) if ((wpt->longitude < -180) || (wpt->longitude > 180.0)) fatal("Invalid longitude %f in waypoint %s.\n", lon_orig, wpt->shortname ? wpt->shortname : ""); - if (!wpt->creation_time.isValid()) { - warning("%s: Invalid timestamp in waypoint %s.\n", - wpt->session->name, - wpt->shortname ? wpt->shortname : ""); - wpt->creation_time = 0; - } + /* * Some input may not have one or more of these types so we * try to be sure that we have these fields even if just by -- 2.30.2